C++ 继承
继承
语法
class TextMessage: public Message子类成员初始化列表可以调用父类的构造函数
TextMessage() : Message(123) {}
子类不继承父类构造函数
实例创建和销毁流程

子类继承父类的成员,可以拓展新成员,同名的会覆盖
- private 成员可以使用父类的名称限定符来访问
Message::HidenProperty
- private 成员可以使用父类的名称限定符来访问
多态
1 | void Send(Message& msg) { |
可以把子类对象的引用当作父类对象的引用使用
重写
父类方法标记为虚函数
virtual void SendMessage() { }
子类重写
void SendMessage() override {...}- 如果父类没有对应的虚方法,编译报错
override 关键字不必须的,但可以编译期检查
包含纯虚函数的类就是抽象类,抽象类是不能实例化的
- 纯虚函数定义
virtual void SendMessage() = 0
- 纯虚函数定义
重写子类析构函数要把父类设为虚析构函数
virtual ~Message() {...}- delete 子类实例,会先执行子类析构函数,子类析构函数会调用父类虚析构函数